/** * Copyright (C) 2012 KRM Associates, Inc. healtheme@krminc.com * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.krminc.phr.security; import com.sun.appserv.security.AppservPasswordLoginModule; import javax.security.auth.login.LoginException; import javax.security.auth.login.FailedLoginException; import javax.security.auth.login.AccountLockedException; import java.util.logging.Logger; import java.util.logging.Level; import com.sun.logging.LogDomains; /** * * @author cmccall */ public class PHRLogin extends AppservPasswordLoginModule { private static Logger _logger=null; private static Level logLevel = Level.INFO; static{ _logger = Logger.getLogger(LogDomains.SECURITY_LOGGER); } /* * Custom realm implementation:only the following * method need to be implemented. * */ protected void authenticateUser() throws LoginException, FailedLoginException{ //log("CustomRealm Auth Info:_username:"+_username+"; _password:"+_password+";_currentrealm:"+_currentRealm); // Get the current realm and check whether it is instance of your realm if (!(_currentRealm instanceof PHRRealm)) { throw new LoginException("PHRRealm : Bad Realm"); } PHRRealm realm = (PHRRealm)_currentRealm; String[] grpList = realm.authenticateUser(_username, _password); if (grpList == null) { // JAAS behavior throw new FailedLoginException("PHRRealm : Login Failed/Inactive with user " + _username); } else if (grpList.length > 0 && grpList[0].equalsIgnoreCase(realm.getLockedRole())) { throw new AccountLockedException("PHRRealm : Login Locked for user " + _username); } log("login succeeded for " + _username); // Add the code related to authenticating to your user database. String[] groupListToForward = (String[])grpList.clone(); /* * Call the commitAuthentication to populate * grpList with the set of groups to which * _username belongs in this realm. */ /* commitUserAuthentication(_username, _password, _currentRealm, groupListToForward); */ commitUserAuthentication(groupListToForward); } /* * Helper methods. * * Simple message print method used throught the program */ public void log(String mesg){ _logger.log(logLevel, "PHRLogin:"+mesg ); } }